<HTML><HEAD><TITLE>shelf_get(+ShelfHandle, +Index, -Term)</TITLE>
</HEAD><BODY>[ <A HREF="index.html">Non-logical Variables, Arrays, Bags, Shelves and Stores</A> | <A HREF="../../index.html">Reference Manual</A> | <A HREF="../../fullindex.html">Alphabetic Index</A> ]
<H1>shelf_get(+ShelfHandle, +Index, -Term)</H1>
Retrieve a stored term from a shelf object
<DL>
<DT><EM>ShelfHandle</EM></DT>
<DD>A shelf handle or shelf name
</DD>
<DT><EM>Index</EM></DT>
<DD>An integer
</DD>
<DT><EM>Term</EM></DT>
<DD>An arbitrary term or a variable
</DD>
</DL>
<H2>Description</H2>
	This retrieves a copy of the stored term from the Index'th slot
	of the shelf object denoted by ShelfHandle.
<P>
	The slots are numbered from 1 to the maximum which was determined
	during shelf creation (but note that ECLiPSe's struct-syntax can
	be used to give the slots symbolic names, see struct/1).
<P>
	Calling shelf_get/3 with an Index of 0 retrieves the whole
	shelf with all its slots as a single compound term whose functor
	corresponds to the one that was given during shelf creation.
<P>
	Storing and retrieving terms from a shelf involves copying the
	term each time, similar to what happens in setval/getval and
	record/recorded.  In particular, if the term contains variables,
	they lose their identity and are replaced with fresh ones.
<P>
	Note: If ShelfHandle is not a handle, then it must be an atom or a
	compound term, and the shelf is identified by this term's toplevel
	functor together with the context module.
    
<H3>Modes and Determinism</H3><UL>
<LI>shelf_get(+, +, -) is det
</UL>
<H3>Modules</H3>
This predicate is sensitive to its module context (tool predicate, see @/2).
<H3>Exceptions</H3>
<DL>
<DT><EM>(4) instantiation fault </EM>
<DD>ShelfHandle is not instantiated
<DT><EM>(5) type error </EM>
<DD>Index is not instantiated
<DT><EM>(5) type error </EM>
<DD>ShelfHandle is not a shelf
<DT><EM>(5) type error </EM>
<DD>Index is not an integer
<DT><EM>(6) out of range </EM>
<DD>Index is negative or greater than the number of slots on the shelf
<DT><EM>(40) stale object handle </EM>
<DD>ShelfHandle refers to an already destroyed shelf
</DL>
<H2>Examples</H2>
<PRE>For examples see shelf_create/2,3.</PRE>
<H2>See Also</H2>
<A HREF="../../kernel/storage/shelf_create-2.html">shelf_create / 2</A>, <A HREF="../../kernel/storage/shelf_create-3.html">shelf_create / 3</A>, <A HREF="../../kernel/storage/shelf_set-3.html">shelf_set / 3</A>, <A HREF="../../kernel/storage/shelf_abolish-1.html">shelf_abolish / 1</A>, <A HREF="../../kernel/syntax/struct-1.html">struct / 1</A>
</BODY></HTML>
